package com.yuncheng.spcyApi.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuncheng.spcyApi.bo.JcyExistLbBo;
import com.yuncheng.spcyApi.entity.SpcyRsHcy;
import com.yuncheng.common.base.service.BaseService;
import com.yuncheng.entity.YcSysUser;
import com.yuncheng.spcyApi.vo.jcy.HcyJbxxVo;
import com.yuncheng.spcyApi.vo.jcy.RsHcyVo;

import java.util.List;
import java.util.Map;

/**
 * @Description: 审评查验-核查员库
 * @Author: csx
 * @Date: 2023-03-03
 * @Version: V1.0
 */
public interface ISpcyRsHcyService extends BaseService<SpcyRsHcy> {
    // 导入
    void impRsHcyData(Map map, String ywflCode, Integer xh);

    /** 检查员类别总库-列表查询 */
    List<RsHcyVo> getRsHcyList(RsHcyVo rsHcyVo);

    /** 检查员类别总库-分页列表查询 */
    IPage<RsHcyVo> pageRsHcyList(Page<RsHcyVo> page, RsHcyVo rsHcyVo, String orderItem, String orderType);

    /** 检查员基本信息列表 */
    List<HcyJbxxVo> findRsHcyList(RsHcyVo rsHcyVo);

    /**
     * 验证对应检查员类别是否存在
     * @param fjcylb 检查员类别
     * @param userid 用户id
     */
    boolean verifyLbJcyIsExist(String fjcylb, String userid);

    /**
     * 验证对应检查员类别是否存在
     * @param fjcylb 检查员类别
     * @param fjcyxl 检查员小类
     * @param userid 用户id
     */
    boolean verifyLbJcyIsExist(String fjcylb, String fjcyxl, String userid);

    /**
     * 验证对应检查员类别是否存在
     * @param fjcylb 检查员类别
     * @param fjcyxl 检查员小类
     * @param userid 用户id
     */
    JcyExistLbBo verifyLbJcyIsExistList(String fjcylb, String fjcyxl, String userid);

    /**
     * 更新检查员状态所属库
     * @param userId 用户id
     * @param lb 检查员类别
     */
    void updateJcyStateSsk(String userId,String lb,String ssk);

    /**
     * 更新检查员状态所属库
     * @param userId 用户id
     * @param fjcylb 检查员类别
     * @param fjcyxl 检查员小类
     */
    void updateJcyStateSsk(String userId,String fjcylb, String fjcyxl, String ssk);

    /**
     * 新增对应类别的检查员
     */
    void addNewLbJcy(SpcyRsHcy hcy);

    /**
     * 初始化对应类型的检查员身份
     *
     * @param userid 用户id
     * @param fxllx 序列类型
     * @param fjcylb 检查员类别
     * @param fjcyxl 检查员小类
     * @param ssk 所属库
     * @param zytc 专业特长
     */
    void initNewLbJcy(String userid, String fxllx, String fjcylb, String fjcyxl, String ssk, String zytc);

    /**
     * 初始化对应类型的检查员身份
     * @param newJcyid 新检查员id
     * @param userid 用户id
     * @param fxllx 序列类型
     * @param fjcylb 检查员类别
     * @param fjcyxl 检查员小类
     * @param ssk 所属库
     * @param zytc 专业特长
     */
    void initNewLbJcy(String newJcyid, String userid, String fxllx, String fjcylb, String fjcyxl, String ssk, String zytc);

    /**
     * 初始化遴选对应类型的检查员身份
     * @param newJcyid 新检查员id
     * @param userid 用户id
     * @param fxllx 序列类型
     * @param fjcylb 检查员类别
     * @param fjcyxl 检查员小类
     * @param ssk 所属库
     * @param zytc 专业特长
     * @param lxwjh 遴选文件号
     */
    void initNewLxLbJcy(String newJcyid, String userid, String fxllx, String fjcylb, String fjcyxl, String ssk, String zytc, String lxwjh);

    /**
     * 初始化遴选对应类型的检查员身份
     * @param newJcyid 新检查员id
     * @param userid 用户id
     * @param fxllx 序列类型
     * @param fjcylb 检查员类别
     * @param fjcyxl 检查员小类
     * @param ssk 所属库
     * @param zytc 专业特长
     * @param prwjh 聘任文件号
     */
    void initNewPrLbJcy(String newJcyid, String userid, String fxllx, String fjcylb, String fjcyxl, String ssk, String zytc, String prwjh);

    /**
     * 查询用户所有的检查员身份
     * @param userid
     * @return
     */
    List<SpcyRsHcy> selectJcyListByUserId(String userid);

    /**
     * 查询用户有效的检查员身份列表
     */
    List<SpcyRsHcy> selectJcyYxList(String userid);

    /**
     * 查询用户有效的检查员身份列表-根据检查类型
     */
    List<SpcyRsHcy> selectJcyYxListByFlx(String userid, String flx);

    /**
     * 查询用户有效的检查员身份列表-根据检查小类
     */
    List<SpcyRsHcy> selectJcyYxListByFjcyxl(String userid, String fjcyxl);

    /**
     * 查询用户无效的检查员身份列表
     */
    List<SpcyRsHcy> selectJcyWxList(String userid);

    /**
     * 查询用户所有的检查员身份列表
     */
    List<SpcyRsHcy> selectJcyAllList(String userid);

    /**
     * 查询检查员用户列表
     * @return
     */
    List<YcSysUser> selectJcyUserList(YcSysUser user);

    /**
     * 查询检查员用户基本信息列表
     * @return
     */
    List<YcSysUser> selectJcyUserJbxxList(YcSysUser user);

    /**
     * 检查员身份基本信息列表
     * @return
     */
    List<SpcyRsHcy> selectJcyJbxxList(SpcyRsHcy bean);

    /**
     * 更新检查员身份有效状态
     */
    void updateJcyLbYxState(String jcyid);

    /**
     * 更新检查员身份无效状态
     */
    void updateJcyLbWxState(String jcyid);
}
